Пример #1
0
	void LogDelegate::paint (QPainter * painter, QStyleOptionViewItem const & option, QModelIndex const & index) const
	{
		painter->save();
		QStyleOptionViewItemV4 option4 = option;
		initStyleOption(&option4, index);

		std::vector<QString> const & column_aligns = m_log_widget.config().m_columns_align;
		if (index.column() < column_aligns.size())
		{
			E_Align const align = stringToAlign(column_aligns[index.column()].at(0).toLatin1());
			option4.displayAlignment = static_cast<Qt::Alignment>(1 << align);
		}
		std::vector<QString> const & column_elides = m_log_widget.config().m_columns_elide;
		if (index.column() < column_elides.size())
		{
			E_Elide const elide = stringToElide(column_elides[index.column()].at(0).toLatin1());
			option4.textElideMode = static_cast<Qt::TextElideMode>(elide);
		}

		int const tag = m_log_widget.column2Tag(index.column());
		if (tag < tlv::tag_max_value)
		{
			switch (tag)
			{
				case tlv::tag_file:
					paintTokenized(painter, option4, index, QString("[:/\\\\]"), "/", m_log_widget.config().m_cut_path_level);
					break;
				case tlv::tag_func:
					paintTokenized(painter, option4, index, QString("[::]"), "::",  m_log_widget.config().m_cut_namespaces);
					break;
				case tlv::tag_ctx:
					if (m_app_data.getDictCtx().m_names.size())
						paintContext(painter, option4, index);
					else
						QStyledItemDelegate::paint(painter, option4, index); // no dictionnary
					break;
				case tlv::tag_ctime:
				case tlv::tag_stime:
					paintTime(painter, option4, index);
					break;
				
				default:
					QStyledItemDelegate::paint(painter, option4, index);
					break;
			}
		}
		else
		{
			// user tags
			QStyledItemDelegate::paint(painter, option4, index);
		}

		painter->restore();
	}
Пример #2
0
void LogCtxMenu::onClickedAtSettingColumnAlign (QModelIndex const idx)
{
	syncSettingsViews(m_ui->listViewColumnAlign, idx);
	QString const txt = m_ui->listViewColumnAlign->model()->data(idx).toString();
	E_Align act = e_AlignLeft;
	if (txt.isEmpty())
	{ }
	else
	{
		E_Align const curr = stringToAlign(txt.toStdString().c_str()[0]);
		size_t i = (curr + 1) % e_max_align_enum_value;
		act = static_cast<E_Align>(i);
	}
	m_ui->listViewColumnAlign->model()->setData(idx, QString(alignToString(act)));
}
Пример #3
0
extern bool ini_conf_load(const char *inifilename, p_conf conf)
{
	dictionary *dict;
	char buf[80];
	int i;
	extern void get_language(void);

	if (conf == NULL || inifilename == NULL) {
		return false;
	}

	dict = iniparser_load(inifilename);

	if (dict == NULL)
		return false;

	conf_default(conf);

	STRCPY_S(conf->path, iniparser_getstring(dict, "Global:path", conf->path));
	conf->forecolor =
		iniparser_getunsigned(dict, "UI:forecolor", conf->forecolor);
	conf->giftranscolor =
		iniparser_getunsigned(dict, "Image:giftranscolor", conf->giftranscolor);
	conf->bgcolor = iniparser_getunsigned(dict, "UI:bgcolor", conf->bgcolor);
	conf->have_bg = iniparser_getboolean(dict, "UI:have_bg", conf->have_bg);
	conf->titlecolor =
		iniparser_getunsigned(dict, "UI:titlecolor", conf->titlecolor);
	conf->menutextcolor =
		iniparser_getunsigned(dict, "UI:menutextcolor", conf->menutextcolor);
	conf->menubcolor =
		iniparser_getunsigned(dict, "UI:menubcolor", conf->menubcolor);
	conf->selicolor =
		iniparser_getunsigned(dict, "UI:selicolor", conf->selicolor);
	conf->selbcolor =
		iniparser_getunsigned(dict, "UI:selbcolor", conf->selbcolor);
	conf->msgbcolor =
		iniparser_getunsigned(dict, "UI:msgbcolor", conf->msgbcolor);
	conf->usedyncolor =
		iniparser_getboolean(dict, "UI:usedyncolor", conf->usedyncolor);
	conf->rowspace = iniparser_getint(dict, "Text:rowspace", conf->rowspace);
	conf->infobar =
		stringToInfobar(iniparser_getstring
						(dict, "Text:infobar",
						 infobarToString(buf, sizeof(buf), conf->infobar)));
	conf->infobar_style =
		iniparser_getint(dict, "Text:infobar_style", conf->infobar_style);
	conf->infobar_fontsize =
		iniparser_getunsigned(dict, "Text:infobar_fontsize",
							  conf->infobar_fontsize);
	conf->rlastrow =
		iniparser_getboolean(dict, "Text:rlastrow", conf->rlastrow);
	conf->autobm = iniparser_getboolean(dict, "Text:autobm", conf->autobm);
	conf->vertread =
		stringToVertread(iniparser_getstring
						 (dict, "Text:vertread",
						  vertreadToString(buf, sizeof(buf), conf->vertread)));
	conf->encode =
		stringToEncode(iniparser_getstring
					   (dict, "Text:encode",
						encodeToString(buf, sizeof(buf), conf->encode)));
	conf->fit =
		stringToFit(iniparser_getstring
					(dict, "Image:fit",
					 fitToString(buf, sizeof(buf), conf->fit)));
	conf->imginfobar =
		iniparser_getboolean(dict, "Image:imginfobar", conf->imginfobar);
	conf->scrollbar =
		iniparser_getboolean(dict, "Text:scrollbar", conf->scrollbar);
	conf->scale = iniparser_getint(dict, "Image:scale", conf->scale);
	conf->rotate =
		stringToRotate(iniparser_getstring
					   (dict, "Image:rotate",
						rotateToString(buf, sizeof(buf), conf->rotate)));

	for (i = 0; i < 20; ++i) {
		char key[20];

		SPRINTF_S(key, "Text:txtkey1_%02d", i);
		conf->txtkey[i] = iniparser_getint(dict, key, conf->txtkey[i]);
		SPRINTF_S(key, "Image:imgkey1_%02d", i);
		conf->imgkey[i] = iniparser_getint(dict, key, conf->imgkey[i]);
	}
	check_empty_imgkey(conf);
	STRCPY_S(conf->shortpath,
			 iniparser_getstring(dict, "Global:shortpath", conf->shortpath));
	conf->confver = iniparser_getint(dict, "Global:confver", conf->confver);
	conf->bicubic = iniparser_getboolean(dict, "Image:bicubic", conf->bicubic);
	conf->wordspace = iniparser_getint(dict, "Text:wordspace", conf->wordspace);
	conf->borderspace =
		iniparser_getunsigned(dict, "Text:borderspace", conf->borderspace);
	STRCPY_S(conf->lastfile,
			 iniparser_getstring(dict, "Global:lastfile", conf->lastfile));
	conf->mp3encode =
		stringToEncode(iniparser_getstring
					   (dict, "Music:mp3encode",
						encodeToString(buf, sizeof(buf), conf->mp3encode)));
	conf->lyricencode =
		stringToEncode(iniparser_getstring
					   (dict, "Music:lyricencode",
						encodeToString(buf, sizeof(buf), conf->lyricencode)));
	conf->mp3cycle =
		stringToCycle(iniparser_getstring
					  (dict, "Music:mp3cycle",
					   cycleToString(buf, sizeof(buf), conf->mp3cycle)));
	conf->isreading =
		iniparser_getboolean(dict, "Global:isreading", conf->isreading);
	STRCPY_S(conf->bgarch,
			 iniparser_getstring(dict, "UI:bgarch", conf->bgarch));
	STRCPY_S(conf->bgfile,
			 iniparser_getstring(dict, "UI:bgfile", conf->bgfile));
	conf->bgwhere = iniparser_getint(dict, "UI:bgwhere", conf->bgwhere);
	conf->slideinterval =
		iniparser_getint(dict, "Image:slideinterval", conf->slideinterval);
	conf->hprmctrl =
		iniparser_getboolean(dict, "Music:hprmctrl", conf->hprmctrl);
	conf->grayscale = iniparser_getint(dict, "UI:grayscale", conf->grayscale);
	conf->showhidden =
		iniparser_getboolean(dict, "Global:showhidden", conf->showhidden);
	conf->showunknown =
		iniparser_getboolean(dict, "Global:showunknown", conf->showunknown);
	conf->showfinfo =
		iniparser_getboolean(dict, "Global:showfinfo", conf->showfinfo);
	conf->allowdelete =
		iniparser_getboolean(dict, "Global:allowdelete", conf->allowdelete);
	conf->arrange =
		stringToArrange(iniparser_getstring
						(dict, "Global:arrange",
						 arrangeToString(buf, sizeof(buf), conf->arrange)));
	conf->enableusb =
		iniparser_getboolean(dict, "Global:enableusb", conf->enableusb);
	conf->viewpos =
		stringToViewpos(iniparser_getstring
						(dict, "Image:viewpos",
						 viewposToString(buf, sizeof(buf), conf->viewpos)));
	conf->imgmvspd = iniparser_getint(dict, "Image:imgmvspd", conf->imgmvspd);
	conf->imgpaging =
		stringToImgpaging(iniparser_getstring
						  (dict, "Image:imgpaging",
						   imgpagingToString(buf, sizeof(buf),
											 conf->imgpaging)));
	conf->imgpaging_spd =
		iniparser_getint(dict, "Image:imgpaging_spd", conf->imgpaging_spd);
	conf->imgpaging_interval =
		iniparser_getint(dict, "Image:imgpaging_interval",
						 conf->imgpaging_interval);
	conf->imgpaging_duration =
		iniparser_getint(dict, "Image:imgpaging_duration",
						 conf->imgpaging_duration);
	for (i = 0; i < 20; ++i) {
		char key[20];

		SPRINTF_S(key, "Global:flkey1_%02d", i);
		conf->flkey[i] = iniparser_getint(dict, key, conf->flkey[i]);
	}
	conf->fontsize = iniparser_getint(dict, "UI:fontsize", conf->fontsize);
	conf->reordertxt =
		iniparser_getboolean(dict, "Text:reordertxt", conf->reordertxt);
	conf->pagetonext =
		iniparser_getboolean(dict, "Text:pagetonext", conf->pagetonext);
	conf->autopage = iniparser_getint(dict, "Text:autopage", conf->autopage);
	conf->prev_autopage =
		iniparser_getint(dict, "Text:prev_autopage", conf->prev_autopage);
	conf->autopagetype =
		iniparser_getint(dict, "Text:autopagetype", conf->autopagetype);
	conf->autolinedelay =
		iniparser_getint(dict, "Text:autolinedelay", conf->autolinedelay);
	conf->thumb =
		stringToThumb(iniparser_getstring
					  (dict, "Image:thumb",
					   thumbToString(buf, sizeof(buf), conf->thumb)));
	conf->bookfontsize =
		iniparser_getint(dict, "Text:bookfontsize", conf->bookfontsize);
	conf->enable_analog =
		iniparser_getboolean(dict, "Text:enable_analog", conf->enable_analog);
	conf->img_enable_analog =
		iniparser_getboolean(dict, "Image:img_enable_analog",
							 conf->img_enable_analog);
	for (i = 0; i < 20; ++i) {
		char key[20];

		SPRINTF_S(key, "Text:txtkey2_%02d", i);
		conf->txtkey2[i] = iniparser_getint(dict, key, conf->txtkey2[i]);
		SPRINTF_S(key, "Image:imgkey2_%02d", i);
		conf->imgkey2[i] = iniparser_getint(dict, key, conf->imgkey2[i]);
		SPRINTF_S(key, "Global:flkey2_%02d", i);
		conf->flkey2[i] = iniparser_getint(dict, key, conf->flkey2[i]);
	}
	conf->imgpagereserve =
		iniparser_getint(dict, "Image:imgpagereserve", conf->imgpagereserve);
	conf->lyricex = iniparser_getint(dict, "Music:lyricex", conf->lyricex);
	conf->autoplay =
		iniparser_getboolean(dict, "Music:autoplay", conf->autoplay);
	conf->usettf = iniparser_getboolean(dict, "Text:usettf", conf->usettf);
	STRCPY_S(conf->cttfarch,
			 iniparser_getstring(dict, "Text:cttfarch", conf->cttfarch));
	STRCPY_S(conf->cttfpath,
			 iniparser_getstring(dict, "Text:cttfpath", conf->cttfpath));
	STRCPY_S(conf->ettfarch,
			 iniparser_getstring(dict, "Text:ettfarch", conf->ettfarch));
	STRCPY_S(conf->ettfpath,
			 iniparser_getstring(dict, "Text:ettfpath", conf->ettfpath));
	for (i = 0; i < 3; ++i) {
		char key[20];

		SPRINTF_S(key, "Global:freqs_%d", i);
		conf->freqs[i] = iniparser_getint(dict, key, conf->freqs[i]);
	}
	conf->imgbrightness =
		iniparser_getint(dict, "Image:imgbrightness", conf->imgbrightness);
	conf->dis_scrsave =
		iniparser_getboolean(dict, "Global:dis_scrsave", conf->dis_scrsave);
	conf->autosleep =
		iniparser_getint(dict, "Global:autosleep", conf->autosleep);
	conf->load_exif =
		iniparser_getboolean(dict, "Image:load_exif", conf->load_exif);
	conf->launchtype =
		iniparser_getint(dict, "Global:launchtype", conf->launchtype);
	conf->infobar_use_ttf_mode =
		iniparser_getboolean(dict, "Text:infobar_use_ttf_mode",
							 conf->infobar_use_ttf_mode);
	conf->img_no_repeat =
		iniparser_getboolean(dict, "Image:no_repeat", conf->img_no_repeat);

	conf->hide_flash =
		iniparser_getboolean(dict, "Global:hide_flash", conf->hide_flash);
	conf->tabstop = iniparser_getunsigned(dict, "Text:tabstop", conf->tabstop);

	conf->apetagorder =
		iniparser_getboolean(dict, "Music:apetagorder", conf->apetagorder);

	STRCPY_S(conf->language,
			 iniparser_getstring(dict, "UI:language", conf->language));

	get_language();

	conf->filelistwidth =
		iniparser_getint(dict, "UI:filelistwidth", conf->filelistwidth);

	if (conf->filelistwidth < 0 || conf->filelistwidth > 240)
		conf->filelistwidth = 160;

	conf->ttf_load_to_memory =
		iniparser_getboolean(dict, "Text:ttf_load_to_memory",
							 conf->ttf_load_to_memory);

	conf->save_password =
		iniparser_getboolean(dict, "Global:save_password", conf->save_password);

	conf->scrollbar_width =
		iniparser_getint(dict, "Text:scrollbar_width", conf->scrollbar_width);

	conf->hide_last_row =
		iniparser_getboolean(dict, "Text:hide_last_row", conf->hide_last_row);

	conf->infobar_show_timer =
		iniparser_getboolean(dict, "Text:infobar_show_timer",
							 conf->infobar_show_timer);

	conf->englishtruncate =
		iniparser_getboolean(dict, "Text:englishtruncate",
							 conf->englishtruncate);

	conf->image_scroll_chgn_speed =
		iniparser_getboolean(dict, "Image:image_scroll_chgn_speed",
							 conf->image_scroll_chgn_speed);

	conf->ttf_haste_up =
		iniparser_getboolean(dict, "Text:ttf_haste_up", conf->ttf_haste_up);

	conf->linenum_style =
		iniparser_getboolean(dict, "Text:linenum_style", conf->linenum_style);

	conf->infobar_align =
		stringToAlign(iniparser_getstring(dict, "Text:infobar_align", ""));

	STRCPY_S(conf->musicdrv_opts,
			 iniparser_getstring(dict, "Music:musicdrv_opts",
								 conf->musicdrv_opts));

	conf->magnetic_scrolling =
		iniparser_getboolean(dict, "Image:magnetic_scrolling",
							 conf->magnetic_scrolling);

	conf->use_image_queue =
		iniparser_getboolean(dict, "Image:use_image_queue",
							 conf->use_image_queue);

	conf->max_cache_img =
		iniparser_getunsigned(dict, "Image:max_cache_img", conf->max_cache_img);

	conf->show_encoder_msg = 
		iniparser_getboolean(dict, "Music:show_encoder_msg",
							 conf->show_encoder_msg);

	if (conf->max_cache_img == 0) {
		conf->use_image_queue = false;
	}

	dictionary_del(dict);

	return true;
}
Пример #4
0
	void LogDelegate::paint (QPainter * painter, QStyleOptionViewItem const & option, QModelIndex const & index) const
	{
		painter->save();
		QStyleOptionViewItemV4 option4 = option;
		initStyleOption(&option4, index);

		// TODO: nonexistent item !!!!!!!!!!!!!!!!!
		
		QVector<QString> const & column_aligns = m_log_widget.getConfig().m_columns_align;
		E_Align const align = stringToAlign(column_aligns[index.column()].at(0).toLatin1());
		option4.displayAlignment = static_cast<Qt::Alignment>(1 << align);

		QVector<QString> const & column_elides = m_log_widget.getConfig().m_columns_elide;
		E_Elide const elide = stringToElide(column_elides[index.column()].at(0).toLatin1());
		option4.textElideMode = static_cast<Qt::TextElideMode>(elide);

/*		{	// color tagged line?
			int row = index.row();
			if (m_log_widget.isModelProxy())
				if (FilterProxyModel const * proxy = m_log_widget.logProxy())
				{
					QModelIndex const curr = proxy->mapToSource(index);
					row = curr.row();
				}

			if (m_log_widget.findColorTagRow(row))
			{
				painter->fillRect(option.rect, QColor(202, 225, 255));
			}	
		}*/

		LogWidget & lw = const_cast<LogWidget &>(m_log_widget); // hm

		if (m_log_widget.getConfig().m_cut_path && index.column() == lw.findColumn4Tag(tlv::tag_file))
		{
			int level = m_log_widget.getConfig().m_cut_path_level;
			paintTokenized(painter, option4, index, QString("[:/\\\\]"), "/", level);
		}
		else if (m_log_widget.getConfig().m_cut_namespaces && index.column() == lw.findColumn4Tag(tlv::tag_func))
		{
			int level = m_log_widget.getConfig().m_cut_namespaces;
			paintTokenized(painter, option4, index, QString("[::]"), "::", level);
		}
		else if (m_app_data.getDictCtx().m_names.size() && index.column() == lw.findColumn4Tag(tlv::tag_ctx))
		{
			paintContext(painter, option4, index);
		}
		else if (index.column() == lw.findColumn4Tag(tlv::tag_ctime))
		{
			paintTime(painter, option4, index);
		}
    else if (index.column() == lw.findColumn4Tag(tlv::tag_stime))
    {
      paintTime(painter, option4, index);
    }
		else
		{
			QStyledItemDelegate::paint(painter, option4, index);
		}
		painter->restore();
	}